package es.onlysolutions.gs.web.controller;

import es.onlysolutions.arq.core.mvc.command.AbstractCommandBean;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.validation.BindException;

/**
 * Controller to process the Videos being processed.
 */
public class ListVideoProcessController extends GSController
{

    /**
     * Metodo que devuelve el AbstractCommandBean que se utiliza para la carga de la pagina. En este
     * metodo se debe cargar el commandBean con todas las listas y datos necesarios para cargar la
     * pagina sin errores, delegando el proceso de la peticion en el metodo onSubmit.
     *
     * @param request El HttpServletRequest del que obtener los parametros si son necesarios.
     *                Utilizar para ello la clase de Spring
     *                org.springframework.web.bind.ServletRequestUtils
     * @return El AbstractCommandBean con los datos, o null si no se desea precargar nada.
     * @throws Exception Si ocurre algun error durante el proceso.
     * @see org.springframework.web.bind.ServletRequestUtils
     */
    protected AbstractCommandBean loadPage(HttpServletRequest request) throws Exception
    {
        return null;
    }

    /**
     * Implementacion del metodo onSubmit de Spring. Nuestra implementacion presupone que el command
     * bean es una subclase de AbstractCommandBean. Obtiene del bean la accion a ejecutar y ejecuta
     * el metodo correspondiente a dicha accion. Finalmente realiza un listado y finaliza delegando
     * el resultado en super.onSubmit.
     *
     * @param request       El HttpServletRequest.
     * @param response      El HttpServletResponse.
     * @param command       El Command Bean.
     * @param bindException El BindException de la peticion.
     * @return El ModelAndView al que redirigir.
     * @throws Exception Si ocurre alguna excepcion durante la ejecucion.
     */
    @Override
    protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object command, BindException bindException) throws Exception
    {
        return super.onSubmit(request, response, command, bindException);   
    }
}
